import axios, { AxiosResponse, AxiosError } from "axios";
import { message, notification } from "antd";
import { getToken, clearLocalDatas, USER_INFO, TOKEN, MENU } from "@/utils";
import qs from "qs"
import store from "@/store";
import { clearUser } from "@/store/action";
// 请求地址
const BASE_URL = import.meta.env.REACT_APP_API_BASEURL || "/api/xxxxx";


// 错误信息
const codeMessage: { [key: number]: string } = {
  200: "服务器成功返回请求的数据。",
  201: "新建或修改数据成功。",
  202: "一个请求已经进入后台排队（异步任务）。",
  204: "删除数据成功。",
  400: "发出的请求有错误，服务器没有进行新建或修改数据的操作。",
  401: "用户没有权限（令牌、用户名、密码错误）。",
  403: "用户得到授权，但是访问是被禁止的。",
  404: "发出的请求针对的是不存在的记录，服务器没有进行操作。",
  406: "请求的格式不可得。",
  410: "请求的资源被永久删除，且不会再得到的。",
  422: "当创建一个对象时，发生一个验证错误。",
  500: "服务器发生错误，请检查服务器。",
  502: "网关错误。",
  503: "服务不可用，服务器暂时过载或维护。",
  504: "网关超时。",
};

// 请求配置文件
const configExport = {
    baseURL: BASE_URL,
  
    timeout: 1000 * 15,
    withCredentials: false,
    maxRedirects: 3,
    headers: {
      "Content-Type": "application/json;charset=UTF-8",
    },
    responseType: 'blob' as AxiosResponse['config']['responseType'],
  };
  
  // 创建ajax实例
  const instanceExport = axios.create(configExport);
  instanceExport.interceptors.request.use(
    function (configExport) {
      let token = getToken();
      if (token) {
        configExport.headers["authorization"] = token;
      }
      return configExport;
    },
    function (error) {
      // 对请求错误做些什么
      return Promise.reject(error);
    }
  );

  instanceExport.get = function (url: string, data: any, ...any) {
    let query: string = qs.stringify(data, { addQueryPrefix: true });
    return instanceExport.get(url + query, ...any)
  }

  instanceExport.post = function (url: string, data: any) {
    let query: string = qs.stringify(data, { addQueryPrefix: true });
    return instanceExport.post(url, query)
  }

  
  export default instanceExport;